Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit 58f036219a28346477210dc2004a4186b32bbd5c


Parents : 68e6d65
Author : Ivan <e46112d44649266d71fe2193e00a4710>
Signature : T66BB85Valid, signed by author
Date : 2026-07-24T08:11:39-05:00

refactor: fix issues related to CI/tests failing

Changes
Diff

diff --git a/meshchatx.rsm b/meshchatx.rsm
index c8876941..c620a5f0 100644
Binary files a/meshchatx.rsm and b/meshchatx.rsm differ

diff --git a/meshchatx/src/backend/rnsh_manager.py b/meshchatx/src/backend/rnsh_manager.py
index b7cdb764..dae60ec2 100644
--- a/meshchatx/src/backend/rnsh_manager.py
+++ b/meshchatx/src/backend/rnsh_manager.py
@@ -712,7 +712,11 @@ class RNSHManager:
Returns the realpath on success, or None when the path escapes the jail.
"""
- if not isinstance(user_path, str) or not user_path.strip() or "\x00" in user_path:
+ if (
+ not isinstance(user_path, str)
+ or not user_path.strip()
+ or "\x00" in user_path
+ ):
return None
expanded = os.path.expanduser(user_path.strip())
if not os.path.isabs(expanded):

diff --git a/meshchatx/src/backend/rrc/manager.py b/meshchatx/src/backend/rrc/manager.py
index 09c5045f..ea5bcc23 100644
--- a/meshchatx/src/backend/rrc/manager.py
+++ b/meshchatx/src/backend/rrc/manager.py
@@ -254,7 +254,7 @@ class RRCHub:
self.manager._notify_change(self)
def _bump_unread(self, room):
- if not room or room not in self.rooms:
+ if not room:
return
self.unread_rooms.add(room)
self.unread_counts[room] = min(9999, self.unread_counts.get(room, 0) + 1)
@@ -946,7 +946,10 @@ class RRCHub:
if cap is not None and len(buf) > cap:
del buf[: len(buf) - cap]
if target_room != self.manager.active_room_for(self):
- self._bump_unread(target_room)
+ # After kick/rollback the room is already removed from
+ # self.rooms. Do not re-bump unread from the ERROR notice.
+ if target_room in self.rooms:
+ self._bump_unread(target_room)
self.manager._notify_messages(self, msg)
if target_room:
self._append_history(target_room, msg)

diff --git a/meshchatx/src/frontend/components/map/MapBrowser.vue b/meshchatx/src/frontend/components/map/MapBrowser.vue
index bb0b4484..498aa83e 100644
--- a/meshchatx/src/frontend/components/map/MapBrowser.vue
+++ b/meshchatx/src/frontend/components/map/MapBrowser.vue
@@ -83,11 +83,7 @@ import TileCache from "../../js/TileCache";
import GlobalEmitter from "../../js/GlobalEmitter";
import GlobalState from "../../js/GlobalState";
import { loadMapTabs, saveMapTabs } from "../../js/browserLayoutStore";
-import {
- LEGACY_MAP_STATE_KEY,
- legacyMapTabStateKey,
- mapViewStateKey,
-} from "../../js/mapStateKeys.js";
+import { LEGACY_MAP_STATE_KEY, legacyMapTabStateKey, mapViewStateKey } from "../../js/mapStateKeys.js";
const DOUBLE_TAP_MS = 400;

diff --git a/meshchatx/src/frontend/components/nomadnetwork/NomadNetworkPage.vue b/meshchatx/src/frontend/components/nomadnetwork/NomadNetworkPage.vue
index a6744492..937094e1 100644
--- a/meshchatx/src/frontend/components/nomadnetwork/NomadNetworkPage.vue
+++ b/meshchatx/src/frontend/components/nomadnetwork/NomadNetworkPage.vue
@@ -2456,10 +2456,7 @@ export default {
const urlTrimmed = typeof url === "string" ? url.trim() : "";
const normalizedLxmf = Utils.normalizeMeshchatHashHex(urlTrimmed);
const lxmfLower = urlTrimmed.toLowerCase();
- if (
- normalizedLxmf.length === 32 &&
- (lxmfLower.startsWith("lxmf@") || lxmfLower.startsWith("lxmf://"))
- ) {
+ if (normalizedLxmf.length === 32 && (lxmfLower.startsWith("lxmf@") || lxmfLower.startsWith("lxmf://"))) {
const destinationHash = normalizedLxmf;
const routeName = this.isPopoutMode ? "messages-popout" : "messages";
await this.$router.push({

diff --git a/tests/backend/test_settings_interfaces_followup_oracle.py b/tests/backend/test_settings_interfaces_followup_oracle.py
index ebc2e708..79c71ecd 100644
--- a/tests/backend/test_settings_interfaces_followup_oracle.py
+++ b/tests/backend/test_settings_interfaces_followup_oracle.py
@@ -29,15 +29,17 @@ async def test_oracle_block_all_restore_preserves_zero_stamp_cost():
block = {"v": False}
app.config.lxmf_inbound_stamp_cost.get.side_effect = lambda: stamp_cost["v"]
- app.config.lxmf_inbound_stamp_cost.set.side_effect = lambda v: stamp_cost.__setitem__(
- "v",
- v,
- )
- app.config.lxmf_inbound_stamp_cost_before_block.get.side_effect = (
- lambda: before["v"]
+ app.config.lxmf_inbound_stamp_cost.set.side_effect = lambda v: (
+ stamp_cost.__setitem__(
+ "v",
+ v,
+ )
)
- app.config.lxmf_inbound_stamp_cost_before_block.set.side_effect = (
- lambda v: before.__setitem__("v", v)
+ app.config.lxmf_inbound_stamp_cost_before_block.get.side_effect = lambda: before[
+ "v"
+ ]
+ app.config.lxmf_inbound_stamp_cost_before_block.set.side_effect = lambda v: (
+ before.__setitem__("v", v)
)
app.config.block_all_from_strangers.get.side_effect = lambda: block["v"]
app.config.block_all_from_strangers.set.side_effect = lambda v: block.__setitem__(

diff --git a/tests/frontend/MapBrowser.test.js b/tests/frontend/MapBrowser.test.js
index de8da260..988b253d 100644
--- a/tests/frontend/MapBrowser.test.js
+++ b/tests/frontend/MapBrowser.test.js
@@ -25,6 +25,8 @@ vi.mock("@/components/map/MapPage.vue", () => ({
import TileCache from "@/js/TileCache";
import MapBrowser from "@/components/map/MapBrowser.vue";
+import GlobalState from "@/js/GlobalState";
+import { mapViewStateKey } from "@/js/mapStateKeys.js";
const MaterialDesignIconStub = {
name: "MaterialDesignIcon",
@@ -187,7 +189,7 @@ describe("MapBrowser.vue", () => {
await mountBrowser();
await vi.waitFor(() => {
expect(TileCache.setMapState).toHaveBeenCalledWith(
- "map_tab_legacy-tab",
+ mapViewStateKey(GlobalState.config?.identity_hash, "legacy-tab"),
expect.objectContaining({ center: [1, 2], zoom: 8 })
);
});


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────